PRISMAstatement::prisma(found = 8002,
found_other = 7,
no_dupes = 7187,
screened = 7187,
screen_exclusions = 6913,
full_text = 274,
full_text_exclusions = 124,
qualitative = 144,
quantitative = 144,
width = 800, height = 1200)
## Warning in prisma_graph(found = found, found_other = found_other, no_dupes =
## no_dupes, : After full-text exclusions, a different number of remaining articles
## for qualitative synthesis is stated.
n_sample = dat.meta.long %>%
summarise(n=length(unique(paste(ID_study, Echantillons_indépendants))))
data.frame(n_sample=n_sample, dat_tot)
## n n_studies n_es n_nexp_out n_exp_out
## 1 152 142 647 8300 7983
dat.borenstein %>%
group_by(outcome_SOC_agg) %>%
summarise(n_es = sum(trial),
n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
n_study2 = length(unique(ID_study)))
## # A tibble: 5 x 5
## outcome_SOC_agg n_es n_exp n_nexp n_study2
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Empathy 31 507 560 13
## 2 Everyday social skills 223 5847 5506 87
## 3 Facial emotion recognition 186 2094 2168 45
## 4 Non-facial emotion recognition 28 522 580 9
## 5 Theory of mind 179 2482 2395 52
synth_n = dat.borenstein %>%
group_by(outcome_SOC) %>%
summarise(n_es = sum(trial),
n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
nstudy1 = n(),
n_study2 = length(unique(ID_study)))
synth_n
## # A tibble: 10 x 6
## outcome_SOC n_es n_exp n_nexp nstudy1 n_stu~1
## <chr> <dbl> <dbl> <dbl> <int> <int>
## 1 Empathy (adjusted) 6 71 80 3 3
## 2 Empathy (non-adjusted) 25 436 480 12 12
## 3 Everyday social skills (adjusted) 14 277 306 8 8
## 4 Everyday social skills (non-adjusted) 209 5570 5200 82 82
## 5 Facial emotion recognition (adjusted) 18 382 511 6 6
## 6 Facial emotion recognition (non-adjusted) 168 1712 1657 42 42
## 7 Non-facial emotion recognition (adjusted) 3 141 254 2 2
## 8 Non-facial emotion recognition (non-adjus~ 25 381 326 8 8
## 9 Theory of mind (adjusted) 18 198 230 7 7
## 10 Theory of mind (non-adjusted) 161 2284 2165 49 49
## # ... with abbreviated variable name 1: n_study2
dat.meta.long %>%
group_by(outcome_SOC) %>%
summarise(n=length(unique(paste(ID_study, Echantillons_indépendants))))
## # A tibble: 10 x 2
## outcome_SOC n
## <chr> <int>
## 1 Empathy (adjusted) 3
## 2 Empathy (non-adjusted) 14
## 3 Everyday social skills (adjusted) 8
## 4 Everyday social skills (non-adjusted) 86
## 5 Facial emotion recognition (adjusted) 7
## 6 Facial emotion recognition (non-adjusted) 44
## 7 Non-facial emotion recognition (adjusted) 2
## 8 Non-facial emotion recognition (non-adjusted) 8
## 9 Theory of mind (adjusted) 7
## 10 Theory of mind (non-adjusted) 52
ggplot(dat.meta, aes(x = es_adj, y = es)) +
geom_jitter(alpha = 0.3, width = 0.35, size = 1/dat.meta$se) +
geom_violin(size = 0.5, alpha = 0.5) +
theme_bw()
2 plots, tu choisis celui qui tu préfères
ggplot(dat.meta, aes(x = outcome_SOC_agg, y = es)) +
geom_jitter(width = 0.1, alpha = 0.2, aes(fill = ID, size = 1/se)) + # geom_boxplot(trim=FALSE, alpha = 0.6) +
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
guides(fill=FALSE) +
coord_flip()
ggplot(dat.meta, aes(x = outcome_SOC_agg, y = es)) +
geom_violin(aes(fill = outcome_SOC_agg), alpha = 0.3) +
geom_jitter(width = 0.1, alpha = 0.2, aes(fill = ID, size = 1/se)) +
geom_boxplot(width=0.1)+
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
theme(text = element_text(size = 18),
legend.position = "none",
axis.title.y = element_text(size=12, face="bold"),
axis.title.x = element_text(size=12, face="bold")) +
coord_flip()
V.SCE <- with(dat.meta,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_SOC - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_SOC - 1)
het = function(x, y) {
i2 = NA
for (i in 1:nrow(vcov(x))) {
i2[i] = 100 * (vcov(x)[i,i] - vcov(y)[i,i]) / vcov(x)[i,i]
}
return(i2)
}
res.SCE <- data.frame(clubSandwich::coef_test(SCE, vcov = "CR2", cluster = dat.meta$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci = data.frame(clubSandwich::conf_int(SCE, vcov = "CR2", cluster = dat.meta$ID_study))
res.SCE$target <- gsub("outcome_SOC", "", row.names(res.SCE))
res.SCE.ci$target <- gsub("outcome_SOC", "", row.names(res.SCE.ci))
res.SCE = dplyr::left_join(res.SCE, res.SCE.ci)
res.SCE$tau2 = SCE$tau2
res.SCE$I2 = het(SCE, SCE.ISQ)
res_main <- left_join(res.SCE, dat_SOC)
## Joining, by = "target"
res_main$p_Satt_bonferroni = res_main$p_Satt * 8
res_main$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_main$outcome_SOC))
res_main$outcome_SOC <- gsub("social", "Social", res_main$outcome_SOC)
res_main$outcome_SOC <- gsub("skill", "Skill", res_main$outcome_SOC)
res_main$outcome_SOC <- gsub("emotion", "Emotion", res_main$outcome_SOC)
res_main$outcome_SOC <- gsub("recognition", "Recognition", res_main$outcome_SOC)
res_main$outcome_SOC <- gsub("mind", "Mind", res_main$outcome_SOC)
res_main$outcome_SOC <- factor(res_main$outcome_SOC,
levels=c('Theory of Mind (non-adjusted)',
'Theory of Mind (adjusted)',
'Empathy (non-adjusted)',
'Empathy (adjusted)',
'Facial Emotion Recognition (non-adjusted)',
'Facial Emotion Recognition (adjusted)',
'Non-facial Emotion Recognition (non-adjusted)',
'Non-facial Emotion Recognition (adjusted)',
'Everyday Social Skills (non-adjusted)',
'Everyday Social Skills (adjusted)'))
res_main[,c("beta", "SE", "tstat", "df", "p_Satt",
"p_Satt_bonferroni", "CI_L", "CI_U", "tau2", "I2",
"n_studies", "n_nexp_out" , "n_exp_out")] <- apply(
res_main[,c("beta", "SE", "tstat", "df", "p_Satt",
"p_Satt_bonferroni", "CI_L", "CI_U", "tau2", "I2",
"n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
res_main <- res_main[order(res_main$outcome_SOC), ]
DT::datatable(res_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_main$SE_COR = (res_main$CI_U - res_main$CI_L) / (3.92)
res_main$raw_outcome_save = res_main$raw_outcome
# res_main$raw_outcome = res_main$raw_outcome_save
res_main$raw_outcome <- factor(res_main$raw_outcome,
levels=c('Theory of mind',
'Empathy',
'Facial emotion recognition',
'Non-facial emotion recognition',
'Everyday social skills'))
tab.plot <- data.frame(
Outcome = do.call(rbind, lapply(res_main$outcome_SOC,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_main$n_exp_out,
n_nexpT = res_main$n_nexp_out,
n_studies = res_main$n_studies,
tau2 = res_main$tau2,
I2 = paste0(round(res_main$I2), "%"))
value_num_plot = data.frame(apply(res_main[, c("beta", "SE_COR")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot[ ,c("beta", "SE_COR")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot,
group = res_main$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot$n_ADHD + tab.plot$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
# , eval = FALSE
# windows() ## create window to plot your file, eval = FALSE
metafor::profile.rma.mv(SCE)
## Profiling tau2 = 1
## Profiling tau2 = 2
## Profiling tau2 = 3
## Profiling tau2 = 4
## Profiling tau2 = 5
## Profiling tau2 = 6
## Profiling tau2 = 7
## Profiling tau2 = 8
## Profiling tau2 = 9
## Profiling tau2 = 10
# dev.off()
meta.reg <- metafor::rma.mv(yi = es, V = se^2,
data = dat.borenstein,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
mods = ~ outcome_SOC - 1)
res.S1.a.clean = data.frame(
beta = meta.reg$beta,
se = meta.reg$se,
ci_lo = meta.reg$ci.lb,
ci_up = meta.reg$ci.ub,
pval = meta.reg$pval,
target = gsub("outcome_SOC", "", row.names(meta.reg$b)))
res.S1 <- left_join(res.S1.a.clean, dat_SOC)
## Joining, by = "target"
DT::datatable(res.S1,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
robu.main <- robumeta::robu(es ~ outcome_SOC - 1,
data = dat.meta,
studynum = ID_study,
var.eff.size = se^2,
modelweights = "CORR",
small = TRUE,
rho = 0.8)
dat_robu_main = data.frame(
beta = robu.main$reg_table$b.r,
se = robu.main$reg_table$SE,
ci_lo = robu.main$reg_table$CI.L,
ci_up = robu.main$reg_table$CI.U,
pval = robu.main$reg_table$prob,
target = gsub("outcome_SOC", "", row.names(meta.reg$b)),
target2 = robu.main$reg_table$labels)
DT::datatable(dat_robu_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res.SCE.main = data.frame(
beta = res.SCE$beta,
se = res.SCE$SE,
ci_lo = res.SCE$CI_L,
ci_up = res.SCE$CI_U,
pval = res.SCE$p_Satt,
target =res.SCE$target)
res.SCE.main$Analysis = "SCE approach"
res.S1.a.clean$Analysis = "Borenstein approach"
dat_robu_main$Analysis = "RVE approach"
dat_forest_S1 = bind_rows(res.SCE.main,
res.S1.a.clean,
dat_robu_main)
meta_res_tot = meta::metagen(TE = beta, seTE = (ci_up-ci_lo)/(2*qnorm(.975)),
sm = "SMD", data = dat_forest_S1,
subgroup = target,
studlab = Analysis)
meta::forest(meta_res_tot, random = FALSE, fixed = FALSE,
leftcols = c("studlab"),
text.subgroup.nohet = FALSE, print.tau2 = FALSE, print.I2 = FALSE, print.pval.Q = FALSE,
plotwidth = "15cm", colgap.left = "1cm", colgap.right = "1cm",
leftlabs= c(""),
just = "right", spacing = 0.8)
dat.meta$inv_n_tilda <- with(dat.meta, (n_nexp + n_exp)/(n_nexp*n_exp))
dat.meta$sqrt_inv_n_tilda <- with(dat.meta, sqrt(inv_n_tilda))
nak.pb = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ 1 + sqrt_inv_n_tilda + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(nak.pb, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate SE
## 1 intrcpt -0.8235 0.770
## 2 sqrt_inv_n_tilda 5.1445 1.879
## 3 outcome_SOCEmpathy (non-adjusted) 0.0527 0.610
## 4 outcome_SOCEveryday social skills (adjusted) 0.9632 0.623
## 5 outcome_SOCEveryday social skills (non-adjusted) 0.8803 0.588
## 6 outcome_SOCFacial emotion recognition (adjusted) 0.1770 0.635
## 7 outcome_SOCFacial emotion recognition (non-adjusted) 0.1772 0.585
## 8 outcome_SOCNon-facial emotion recognition (adjusted) 0.0175 0.683
## 9 outcome_SOCNon-facial emotion recognition (non-adjusted) -0.0413 0.590
## 10 outcome_SOCTheory of mind (adjusted) 0.1883 0.591
## 11 outcome_SOCTheory of mind (non-adjusted) 0.3697 0.585
## t-stat d.f. p-val (Satt) Sig.
## 1 -1.0692 2.14 0.3906
## 2 2.7386 18.60 0.0132 *
## 3 0.0863 2.62 0.9374
## 4 1.5448 2.68 0.2305
## 5 1.4980 2.09 0.2679
## 6 0.2790 2.67 0.8005
## 7 0.3030 2.13 0.7889
## 8 0.0257 2.96 0.9812
## 9 -0.0699 2.12 0.9503
## 10 0.3183 2.22 0.7777
## 11 0.6315 2.13 0.5888
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ se,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2",
cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -2.88 0.429 -6.71 70.4 <0.001 ***
## 2 se 14.31 1.603 8.93 23.6 <0.001 ***
dat.meta$var = dat.meta$se^2
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ var,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2",
cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -0.872 0.18 -4.83 75.4 <0.001 ***
## 2 var 23.246 2.36 9.85 18.8 <0.001 ***
dat_egger = data.frame(
meta_review = "Haza",
study = dat.borenstein$ID_study,
factor = dat.borenstein$outcome_SOC,
value = dat.borenstein$es,
se = dat.borenstein$se,
n_cases = dat.borenstein$n_exp,
n_controls = dat.borenstein$n_nexp,
measure = "G")
umb = metaumbrella::umbrella(dat_egger)
## Analyzing factor: Theory of mind (non-adjusted)
## Analyzing factor: Everyday social skills (non-adjusted)
## Analyzing factor: Everyday social skills (adjusted)
## Analyzing factor: Empathy (adjusted)
## Analyzing factor: Facial emotion recognition (non-adjusted)
## Analyzing factor: Non-facial emotion recognition (non-adjusted)
## Analyzing factor: Facial emotion recognition (adjusted)
## Analyzing factor: Theory of mind (adjusted)
## Analyzing factor: Empathy (non-adjusted)
## Analyzing factor: Non-facial emotion recognition (adjusted)
umb
##
## Umbrella review:
## Factor n_studies total_n n_cases
## 1 Theory of mind (non-adjusted) 49 4449 2284
## 2 Everyday social skills (non-adjusted) 82 10770 5570
## 3 Everyday social skills (adjusted) 8 583 277
## 4 Empathy (adjusted) 3 151 71
## 5 Facial emotion recognition (non-adjusted) 42 3369 1712
## 6 Non-facial emotion recognition (non-adjusted) 8 707 381
## 7 Facial emotion recognition (adjusted) 6 893 382
## 8 Theory of mind (adjusted) 7 428 198
## 9 Empathy (non-adjusted) 12 916 436
## 10 Non-facial emotion recognition (adjusted) 2 395 141
## n_controls measure value value_CI eG eG_CI eOR
## 1 2165 G 0.837 [0.683, 0.992] 0.837 [0.683, 0.992] 4.567
## 2 5200 G 1.224 [1.081, 1.366] 1.224 [1.081, 1.366] 9.201
## 3 306 G 1.465 [1.011, 1.92] 1.465 [1.011, 1.92] 14.268
## 4 80 G 0.704 [-0.149, 1.558] 0.704 [-0.149, 1.558] 3.586
## 5 1657 G 0.629 [0.46, 0.798] 0.629 [0.46, 0.798] 3.129
## 6 326 G 0.323 [0.076, 0.57] 0.323 [0.076, 0.57] 1.795
## 7 511 G 0.388 [0.205, 0.57] 0.388 [0.205, 0.57] 2.021
## 8 230 G 0.735 [0.483, 0.987] 0.735 [0.483, 0.987] 3.795
## 9 480 G 0.563 [0.149, 0.977] 0.563 [0.149, 0.977] 2.776
## 10 254 G 0.166 [-0.039, 0.371] 0.166 [-0.039, 0.371] 1.352
## eOR_CI p_value I2 PI_eG PI_eOR
## 1 [3.453, 6.041] 1.90e-26 79.683 [-0.152, 1.826] [0.76, 27.453]
## 2 [7.1, 11.923] 3.18e-63 88.756 [0.006, 2.441] [1.011, 83.755]
## 3 [6.261, 32.516] 2.54e-10 80.824 [-0.093, 3.024] [0.845, 240.955]
## 4 [0.763, 16.865] 1.06e-01 85.352 [-9.768, 11.176] [0, 636178738.813]
## 5 [2.303, 4.252] 3.04e-13 86.203 [-0.398, 1.656] [0.486, 20.141]
## 6 [1.147, 2.811] 1.05e-02 60.343 [-0.42, 1.066] [0.467, 6.909]
## 7 [1.451, 2.814] 3.14e-05 48.174 [-0.112, 0.888] [0.816, 5.003]
## 8 [2.403, 5.995] 1.07e-08 44.783 [0.068, 1.402] [1.132, 12.727]
## 9 [1.311, 5.881] 7.67e-03 85.329 [-1.026, 2.152] [0.155, 49.577]
## 10 [0.932, 1.961] 1.12e-01 0.000 < 3 studies < 3 studies
## egger_p ESB_p power_med JK_p largest_CI_eG largest_CI_eOR rob
## 1 5.11e-01 6.36e-01 100.0 4.07e-25 [0.478, 1.536] [2.379, 16.202] NA
## 2 7.16e-05 1.42e-02 100.0 2.41e-61 [0.421, 0.722] [2.145, 3.707] NA
## 3 1.12e-01 2.37e-01 100.0 8.11e-08 [0.623, 1.315] [3.095, 10.864] NA
## 4 7.95e-01 4.94e-01 86.1 3.04e-01 [0.97, 2.069] [5.806, 42.66] NA
## 5 7.97e-01 9.48e-01 100.0 1.75e-12 [1.684, 2.302] [21.228, 65.088] NA
## 6 4.20e-02 4.10e-01 100.0 3.37e-02 [-0.282, 0.333] [0.6, 1.83] NA
## 7 2.24e-01 4.52e-01 100.0 5.12e-03 [0.166, 0.63] [1.352, 3.133] NA
## 8 2.58e-01 9.02e-01 99.9 2.21e-06 [0.271, 0.939] [1.634, 5.494] NA
## 9 2.66e-01 6.64e-01 100.0 1.95e-02 [0.02, 0.77] [1.036, 4.044] NA
## 10 < 3 studies <NA> 99.7 6.41e-01 [-0.05, 0.41] [0.914, 2.102] NA
## amstar
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 NA
## 9 NA
## 10 NA
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse"))
V.SCE4 <- with(dat.meta4,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S4 <- metafor::rma.mv(yi = es, V = V.SCE4,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.833 0.055 15.142 79.3 <0.001 ***
## 2 Type_publicationThèse 0.108 0.118 0.916 11.7 0.378
SCE.S4 <- metafor::rma.mv(yi = es, V = V.SCE4,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.833 0.055 15.14 79.28 <0.001 ***
## 2 Type_publicationThèse 0.941 0.104 9.06 9.29 <0.001 ***
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse") & outcome_SOC == "Theory of mind (non-adjusted)")
dat.meta4$var = dat.meta4$se^2
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.821 0.0784 10.471 40.76 <0.001 ***
## 2 Type_publicationThèse -0.222 0.2527 -0.878 5.87 0.414
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.821 0.0784 10.5 40.76 <0.001 ***
## 2 Type_publicationThèse 0.599 0.2402 2.5 4.68 0.0581 .
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse") & outcome_SOC == "Non-facial emotion recognition (non-adjusted)")
dat.meta4$var = dat.meta4$se^2
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.223 0.100 2.23 5.59 0.0708 .
## 2 Type_publicationThèse 0.814 0.104 7.80 6.11 <0.001 ***
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.223 0.1003 2.23 5.59 0.0708 .
## 2 Type_publicationThèse 1.037 0.0287 36.14 1.00 0.0176 *
dat.meta.S10 = subset(dat.meta, !is.na(rob_tot) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
V.SCE.S10 <- with(dat.meta.S10,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate SE
## 1 intrcpt 0.5467 0.3695
## 2 rob_tot 0.1166 0.0619
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.3009 0.5162
## 4 outcome_SOCTheory of mind (non-adjusted) 0.1267 0.4207
## 5 rob_tot:outcome_SOCFacial emotion recognition (non-adjusted) -0.0561 0.0873
## 6 rob_tot:outcome_SOCTheory of mind (non-adjusted) -0.0903 0.0701
## t-stat d.f. p-val (Satt) Sig.
## 1 1.480 5.76 0.191
## 2 1.883 4.23 0.129
## 3 -0.583 20.32 0.566
## 4 0.301 6.05 0.773
## 5 -0.643 19.31 0.528
## 6 -1.287 4.93 0.255
anova(SCE.S10, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 4.8683, p-val = 0.0877
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 0.7554 0.2263 3.34
## 2 rob_tot 0.0807 0.0365 2.21
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.6380 0.1089 -5.86
## 4 outcome_SOCTheory of mind (non-adjusted) -0.4263 0.1062 -4.01
## d.f. p-val (Satt) Sig.
## 1 10.30 0.00723 **
## 2 6.01 0.06911 .
## 3 80.86 < 0.001 ***
## 4 89.68 < 0.001 ***
ggplot(dat.meta.S10, aes(x = rob_tot, y = es)) +
facet_wrap(~outcome_SOC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth() + #method ="lm"
theme_bw()
## 9.5. Effect of age
dat.meta.S6 = subset(dat.meta, !is.na(age) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 2.553 1.064
## 2 age -0.129 0.104
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -1.795 1.209
## 4 outcome_SOCTheory of mind (non-adjusted) -1.396 1.356
## 5 age:outcome_SOCFacial emotion recognition (non-adjusted) 0.118 0.118
## 6 age:outcome_SOCTheory of mind (non-adjusted) 0.100 0.130
## t-stat d.f. p-val (Satt) Sig.
## 1 2.401 17.6 0.0276 *
## 2 -1.244 15.4 0.2320
## 3 -1.485 32.1 0.1474
## 4 -1.029 33.8 0.3107
## 5 0.995 26.1 0.3291
## 6 0.771 29.7 0.4470
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 8.0036, p-val = 0.0183
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.8888 0.5003 3.78
## 2 age -0.0647 0.0483 -1.34
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.5582 0.1185 -4.71
## 4 outcome_SOCTheory of mind (non-adjusted) -0.3443 0.1096 -3.14
## d.f. p-val (Satt) Sig.
## 1 41.3 < 0.001 ***
## 2 32.0 0.18929
## 3 76.6 < 0.001 ***
## 4 90.2 0.00227 **
dat.meta.S6 = subset(dat.meta, !is.na(age_diff) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.22237 0.0772
## 2 age_diff -0.05056 0.2305
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.58079 0.1136
## 4 outcome_SOCTheory of mind (non-adjusted) -0.38312 0.1069
## 5 age_diff:outcome_SOCFacial emotion recognition (non-adjusted) -0.06429 0.2504
## 6 age_diff:outcome_SOCTheory of mind (non-adjusted) 0.00341 0.2571
## t-stat d.f. p-val (Satt) Sig.
## 1 15.8261 79.18 <0.001 ***
## 2 -0.2194 3.46 0.839
## 3 -5.1138 81.60 <0.001 ***
## 4 -3.5832 93.60 <0.001 ***
## 5 -0.2567 5.33 0.807
## 6 0.0133 5.56 0.990
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.3735, p-val = 0.3052
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.2215 0.0749 16.31
## 2 age_diff -0.0642 0.0594 -1.08
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.5856 0.1118 -5.24
## 4 outcome_SOCTheory of mind (non-adjusted) -0.3824 0.1058 -3.61
## d.f. p-val (Satt) Sig.
## 1 79.24 <0.001 ***
## 2 6.62 0.318
## 3 82.32 <0.001 ***
## 4 93.57 <0.001 ***
dat.meta.S8 = subset(dat.meta, !is.na(sex) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S8$sex = as.numeric(as.character(dat.meta.S8$sex))
dat.meta.S8$sex[dat.meta.S8$sex > 100] <- NA
V.SCE.S8 <- with(dat.meta.S8,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.243430 0.25560
## 2 sex -0.000479 0.00869
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.658205 0.32975
## 4 outcome_SOCTheory of mind (non-adjusted) -0.429270 0.30035
## 5 sex:outcome_SOCFacial emotion recognition (non-adjusted) 0.000484 0.01196
## 6 sex:outcome_SOCTheory of mind (non-adjusted) 0.001302 0.00989
## t-stat d.f. p-val (Satt) Sig.
## 1 4.8648 26.53 <0.001 ***
## 2 -0.0551 5.52 0.9580
## 3 -1.9961 20.69 0.0593 .
## 4 -1.4293 23.35 0.1662
## 5 0.0404 9.38 0.9686
## 6 0.1316 9.16 0.8981
anova(SCE.S8, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 0.0875, p-val = 0.9572
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.234448 0.17429
## 2 sex -0.000158 0.00562
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.645192 0.11575
## 4 outcome_SOCTheory of mind (non-adjusted) -0.395797 0.11345
## t-stat d.f. p-val (Satt) Sig.
## 1 7.0826 51.9 <0.001 ***
## 2 -0.0282 10.6 0.978
## 3 -5.5739 68.9 <0.001 ***
## 4 -3.4886 79.9 <0.001 ***
dat.meta.S9 = subset(dat.meta, !is.na(iq) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq = as.numeric(as.character(dat.meta.S9$iq))
# dat.meta.S9$iq[dat.meta.S9$iq > 100] <- NA
V.SCE.S9 <- with(dat.meta.S9,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt -0.3518 6.8961
## 2 iq 0.0155 0.0663
## 3 outcome_SOCFacial emotion recognition (non-adjusted) 1.6808 7.1994
## 4 outcome_SOCTheory of mind (non-adjusted) -1.6393 9.7749
## 5 iq:outcome_SOCFacial emotion recognition (non-adjusted) -0.0232 0.0692
## 6 iq:outcome_SOCTheory of mind (non-adjusted) 0.0110 0.0940
## t-stat d.f. p-val (Satt) Sig.
## 1 -0.051 5.67 0.961
## 2 0.234 5.84 0.823
## 3 0.233 7.63 0.822
## 4 -0.168 4.27 0.874
## 5 -0.336 7.66 0.746
## 6 0.117 4.14 0.912
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.2783, p-val = 0.3201
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt -0.0663 4.0402 -0.0164
## 2 iq 0.0128 0.0389 0.3283
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.7279 0.1509 -4.8238
## 4 outcome_SOCTheory of mind (non-adjusted) -0.4857 0.1346 -3.6085
## d.f. p-val (Satt) Sig.
## 1 9.10 0.987
## 2 9.18 0.750
## 3 40.33 <0.001 ***
## 4 40.31 <0.001 ***
dat.meta.S9 = subset(dat.meta, !is.na(iq_diff) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq_diff = as.numeric(as.character(dat.meta.S9$iq_diff))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.30952 0.3955
## 2 iq_diff 0.00529 0.0422
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.79424 0.4062
## 4 outcome_SOCTheory of mind (non-adjusted) -0.42626 0.4813
## 5 iq_diff:outcome_SOCFacial emotion recognition (non-adjusted) -0.00868 0.0451
## 6 iq_diff:outcome_SOCTheory of mind (non-adjusted) 0.00934 0.0542
## t-stat d.f. p-val (Satt) Sig.
## 1 3.311 29.29 0.00247 **
## 2 0.126 5.55 0.90453
## 3 -1.955 34.67 0.05865 .
## 4 -0.886 30.49 0.38277
## 5 -0.193 3.19 0.85886
## 6 0.172 5.47 0.86926
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.9094, p-val = 0.3849
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff + outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.31939 0.2590 5.095
## 2 iq_diff 0.00642 0.0248 0.259
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.76165 0.1918 -3.970
## 4 outcome_SOCTheory of mind (non-adjusted) -0.49280 0.1396 -3.531
## d.f. p-val (Satt) Sig.
## 1 32.89 < 0.001 ***
## 2 8.41 0.80171
## 3 40.40 < 0.001 ***
## 4 40.68 0.00105 **
dat.meta.S12.a = subset(dat.meta, !is.na(percentage_inattentive) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S12.a$percentage_inattentive = as.numeric(as.character(dat.meta.S12.a$percentage_inattentive))
V.SCE.S12.a <- with(dat.meta.S12.a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_inattentive
## 3 outcome_SOCFacial emotion recognition (non-adjusted)
## 4 outcome_SOCTheory of mind (non-adjusted)
## 5 percentage_inattentive:outcome_SOCFacial emotion recognition (non-adjusted)
## 6 percentage_inattentive:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.32e+00 0.113410 11.6781 33.71 <0.001 ***
## 2 -2.86e-03 0.000695 -4.1188 1.13 0.1286
## 3 -5.48e-01 0.196898 -2.7852 14.36 0.0143 *
## 4 -4.12e-01 0.176998 -2.3283 37.36 0.0254 *
## 5 -8.56e-05 0.005910 -0.0145 8.43 0.9888
## 6 3.67e-03 0.001225 2.9920 1.08 0.1902
anova(SCE.S12.a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 32.4162, p-val < .0001
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive:outcome_SOC - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 percentage_inattentive:outcome_SOCEveryday social skills (non-adjusted)
## 2 percentage_inattentive:outcome_SOCFacial emotion recognition (non-adjusted)
## 3 percentage_inattentive:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 -0.002798 0.000796 -3.52 1.13 0.1538
## 2 0.013227 0.005375 2.46 7.34 0.0419 *
## 3 0.000974 0.000755 1.29 1.02 0.4167
dat.meta.S12.b = subset(dat.meta, !is.na(percentage_hyperactive) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S12.b$percentage_hyperactive = as.numeric(as.character(dat.meta.S12.b$percentage_hyperactive))
V.SCE.S12.b <- with(dat.meta.S12.b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_hyperactive
## 3 outcome_SOCFacial emotion recognition (non-adjusted)
## 4 outcome_SOCTheory of mind (non-adjusted)
## 5 percentage_hyperactive:outcome_SOCFacial emotion recognition (non-adjusted)
## 6 percentage_hyperactive:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.25830 0.1581 7.9603 32.46 < 0.001 ***
## 2 0.00081 0.0106 0.0763 1.16 0.95022
## 3 -0.60474 0.2006 -3.0142 34.81 0.00478 **
## 4 -0.37515 0.2202 -1.7039 36.61 0.09687 .
## 5 0.00380 0.0120 0.3162 1.61 0.78799
## 6 0.00587 0.0193 0.3038 1.89 0.79146
anova(SCE.S12.b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.3925, p-val = 0.3023
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive+outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.24936 0.13732 9.098
## 2 percentage_hyperactive 0.00173 0.00717 0.241
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.56989 0.16503 -3.453
## 4 outcome_SOCTheory of mind (non-adjusted) -0.32441 0.17159 -1.891
## d.f. p-val (Satt) Sig.
## 1 32.74 < 0.001 ***
## 2 1.52 0.83834
## 3 38.07 0.00137 **
## 4 38.57 0.06621 .
dat.meta.S12.c = subset(dat.meta, !is.na(percentage_combined) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S12.c$percentage_combined = as.numeric(as.character(dat.meta.S12.c$percentage_combined))
V.SCE.S12.c <- with(dat.meta.S12.c,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_combined
## 3 outcome_SOCFacial emotion recognition (non-adjusted)
## 4 outcome_SOCTheory of mind (non-adjusted)
## 5 percentage_combined:outcome_SOCFacial emotion recognition (non-adjusted)
## 6 percentage_combined:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.05819 0.129211 8.190 31.17 <0.001 ***
## 2 0.00298 0.000579 5.149 1.06 0.1112
## 3 -0.26033 0.342024 -0.761 7.54 0.4697
## 4 -0.06668 0.188632 -0.353 34.10 0.7259
## 5 -0.00461 0.004234 -1.089 7.45 0.3101
## 6 -0.00388 0.000625 -6.217 1.06 0.0916 .
anova(SCE.S12.c, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 36.8800, p-val < .0001
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined+outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.15081 0.122445 9.40
## 2 percentage_combined 0.00158 0.000398 3.96
## 3 outcome_SOCFacial emotion recognition (non-adjusted) -0.55606 0.162475 -3.42
## 4 outcome_SOCTheory of mind (non-adjusted) -0.30168 0.173448 -1.74
## d.f. p-val (Satt) Sig.
## 1 32.55 < 0.001 ***
## 2 1.09 0.14190
## 3 38.24 0.00149 **
## 4 38.65 0.08994 .
dat.meta.S7_a = subset(dat.meta, !is.na(percentage_ASD) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]) & percentage_ASD %in% c(0,100))
dat.meta.S7_a$percentage_ASD = factor(dat.meta.S7_a$percentage_ASD)
V.SCE.S7_a <- with(dat.meta.S7_a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S7_a <- metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_ASD * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_a, vcov = "CR2", cluster = dat.meta.S7_a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_ASD100
## 3 outcome_SOCFacial emotion recognition (non-adjusted)
## 4 outcome_SOCTheory of mind (non-adjusted)
## 5 percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted)
## 6 percentage_ASD100:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.332 0.0961 13.86 45.40 < 0.001 ***
## 2 1.059 0.2195 4.82 4.62 0.00588 **
## 3 -0.764 0.1357 -5.63 49.28 < 0.001 ***
## 4 -0.466 0.1464 -3.18 50.34 0.00252 **
## 5 -0.979 0.2187 -4.48 2.62 0.02762 *
## 6 -0.753 0.2504 -3.01 3.48 0.04751 *
anova(SCE.S7_a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 188.0975, p-val < .0001
SCE.S7_a_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_ASD : outcome_SOC - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.S7_a_ph
##
## Multivariate Meta-Analysis Model (k = 363; method: REML)
##
## Variance Components:
##
## outer factor: ID_study (nlvls = 73)
## inner factor: outcome_SOC (nlvls = 3)
##
## estim sqrt k.lvl fixed
## tau^2.1 0.3631 0.6026 120 no
## tau^2.2 0.2204 0.4695 131 no
## tau^2.3 0.3215 0.5670 112 no
## level
## tau^2.1 Everyday social skills (non-adjusted)
## tau^2.2 Facial emotion recognition (non-adjusted)
## tau^2.3 Theory of mind (non-adjusted)
##
## Test for Residual Heterogeneity:
## QE(df = 357) = 6176.7284, p-val < .0001
##
## Test of Moderators (coefficients 1:6):
## QM(df = 6) = 797.9450, p-val < .0001
##
## Model Results:
##
## estimate
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) 1.3318
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) 2.3908
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) 0.5677
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) 0.6479
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) 0.8663
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) 1.1725
## se
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) 0.0963
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) 0.1062
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) 0.1044
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) 0.1190
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) 0.1149
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) 0.1250
## zval
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) 13.8268
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) 22.5104
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) 5.4402
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) 5.4440
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) 7.5418
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) 9.3791
## pval
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) <.0001
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) <.0001
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) <.0001
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) <.0001
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) <.0001
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) <.0001
## ci.lb
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) 1.1431
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) 2.1826
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) 0.3632
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) 0.4146
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) 0.6412
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) 0.9275
## ci.ub
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) 1.5206
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) 2.5989
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) 0.7723
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) 0.8811
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) 1.0914
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) 1.4175
##
## percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) ***
## percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) ***
## percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) ***
## percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) ***
## percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) ***
## percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(SCE.S7_a_ph, L=c(-1,1,0,0,0,0))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_SOCEveryday social skills (non-adjusted) + percentage_ASD100:outcome_SOCEveryday social skills (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 1.0589 0.0499 21.2056 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 449.6769, p-val < .0001
anova(SCE.S7_a_ph, L=c(0,0,-1,1,0,0))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_SOCFacial emotion recognition (non-adjusted) + percentage_ASD100:outcome_SOCFacial emotion recognition (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.0802 0.0594 1.3496 0.1771
##
## Test of Hypothesis:
## QM(df = 1) = 1.8214, p-val = 0.1771
anova(SCE.S7_a_ph, L=c(0,0,0,0,-1,1))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_SOCTheory of mind (non-adjusted) + percentage_ASD100:outcome_SOCTheory of mind (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.3062 0.0520 5.8913 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 34.7080, p-val < .0001
dat.meta.S7_b = subset(dat.meta, !is.na(percentage_CD_ODD) & outcome_SOC %in% unique(synth_n$outcome_SOC[synth_n$nstudy1 > 20]))
dat.meta.S7_b$percentage_CD_ODD = as.numeric(as.character(dat.meta.S7_b$percentage_CD_ODD))
V.SCE.S7_b <- with(dat.meta.S7_b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_SOC))
SCE.S7_b <- metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_CD_ODD * outcome_SOC,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_CD_ODD
## 3 outcome_SOCFacial emotion recognition (non-adjusted)
## 4 outcome_SOCTheory of mind (non-adjusted)
## 5 percentage_CD_ODD:outcome_SOCFacial emotion recognition (non-adjusted)
## 6 percentage_CD_ODD:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.24727 0.12773 9.76 35.42 <0.001 ***
## 2 0.00381 0.00237 1.61 1.20 0.3232
## 3 -0.57571 0.16752 -3.44 49.46 0.0012 **
## 4 -0.33306 0.16606 -2.01 48.44 0.0505 .
## 5 -0.00350 0.00282 -1.24 1.74 0.3552
## 6 -0.00474 0.00255 -1.86 1.67 0.2289
anova(SCE.S7_b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 18.4270, p-val < .0001
SCE.S7_b_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_CD_ODD : outcome_SOC - 1,
random = ~ outcome_SOC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b_ph, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 percentage_CD_ODD:outcome_SOCEveryday social skills (non-adjusted)
## 2 percentage_CD_ODD:outcome_SOCFacial emotion recognition (non-adjusted)
## 3 percentage_CD_ODD:outcome_SOCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 0.004147 0.00196 2.113 1.14 0.257
## 2 0.000415 0.00151 0.275 2.25 0.807
## 3 -0.000527 0.00102 -0.514 1.26 0.683
dat.meta.S11 = subset(dat.meta, !is.na(Type_mesure) & outcome_SOC== "Theory of mind (non-adjusted)")
dat.meta.S11$vi = dat.meta.S11$se^2
dat.meta.S11$es_id = 1:nrow(dat.meta.S11)
SCE.S11 <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ Type_mesure ,
random = ~ 1 | ID_study/es_id)
clubSandwich::coef_test(SCE.S11, vcov = "CR2", cluster = dat.meta.S11$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.767 0.0744 10.31 43.20 <0.001 ***
## 2 Type_mesureReport 0.487 0.2379 2.05 7.77 0.0757 .
SCE.S11wi <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ Type_mesure - 1,
random = ~ 1 | ID_study/es_id)
clubSandwich::coef_test(SCE.S11wi, vcov = "CR2", cluster = dat.meta.S11$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_mesureParadigm 0.767 0.0744 10.3 43.20 <0.001 ***
## 2 Type_mesureReport 1.254 0.2410 5.2 8.28 <0.001 ***